<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 110px;
            height: 100px;
            background: pink;
            position: absolute;
           
        }
        .hf{
            height:20px;
            width:100px;
            background: yellow;
            font-size: 12px;
            text-align: center;
            line-height: 20px;
        }

    </style>
</head>
<body>
    <!-- 拖拽回放 -->
    <div class="box">
        <div class="hf">路径回放</div>
    </div>
    <script>
        /*
            1.当鼠标在box盒子按下的时候
            2.并且鼠标window中移动时候 box元素跟着鼠标一起移动
        */

        var box = document.querySelector('.box');
        var hf= document.querySelector('.hf');
        var zzb=[];

        box.onmousedown = function () {
            // console.log(1);

            // 按下之后 在window中移动
            window.onmousemove = function (e) {
                // box元素跟着光标移动
                // 获取光标在可视窗口的坐标
                e = e || window.event;
                //  box.offsetWidth / 2 盒子宽度的一半
                //  box.offsetHeight /2 盒子高度的一半
                var x = e.clientX - box.offsetWidth / 2;
                var y = e.clientY - box.offsetHeight / 2;

                var xx=e.clientX-e.offsetX;
                var yy=e.clientY-e.offsetY;
            
                zzb.push({x:xx,y:yy})
  
                // 边界值的判断
                // 当l盒子的left 和top 小于0 的时候，直接强制等于0 
                // left  和 top的极限值为0 
                if (x <= 0) {
                    x = 0;
                }
                if (y <= 0) {
                    y = 0;
                }
                // 判断left的最大极限 浏览器的宽度 - 盒子的宽度
                if (x >= window.innerWidth - box.offsetWidth) {
                    x = window.innerWidth - box.offsetWidth
                }

                //判断投票的极限值
                if (y >= window.innerHeight - box.offsetHeight) {
                    y = window.innerHeight - box.offsetHeight
                }

                // 然后把这个值赋值给box的left和top值
                box.style.left = x + 'px';
                box.style.top = y + 'px'

            }
        }
        // 当鼠标在任何位置抬起来的时候，要把移动事件清除
        window.onmouseup = function () {
            //清除一个事件，只需要将事件的值设置null
            window.onmousemove = null;
        };
          //点击回放的时候
            hf.onclick=function(){
            var timer = setInterval(()=>{
                var obj = zzb.pop();//删除最后一个元素并返回最后一个元素给obj
                obj?(box.style.left = obj.x + 'px',box.style.top =obj.y + 'px'):clearInterval(timer);
            },30)
          }

     

       

         


       













    </script>





</body>
</html>